/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BLL;

import DAO.ConexionBD;
import DAO.PropietarioDAO;
import Entidades.Fecha;
import Entidades.Nif;
import Entidades.Propietario;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;


public class PropietarioBLL {

    public void insertar(Propietario propietario, Connection conexion) throws ClassNotFoundException, SQLException {


        PropietarioDAO _propietarioDAO = new PropietarioDAO();
        ConexionBD _conexionBD = new ConexionBD();
       
        Fecha fecha = new Fecha();
        
        
        int dni = Integer.parseInt(propietario.getDni());
        String f = propietario.getFecha();

        conexion = _conexionBD.metodoConexion(propietario);

        conexion.setAutoCommit(false);

        
        fecha.setDia(Integer.parseInt(f.substring(0, 2)));
        fecha.setMes(Integer.parseInt(f.substring(3, 5)));
        fecha.setAny(Integer.parseInt(f.substring(6, 8)));


        if (fecha.validarFecha(fecha.getDia(), fecha.getMes(), fecha.getAny()) == false) {
            conexion.rollback();
            throw new SQLException();
        }
        
        
        
        if (dni < 10000000 || dni > 99999999) {
            conexion.rollback();
            throw new SQLException();
        } else {
            propietario.setDni(propietario.getDni() + "-" + Nif.calcularLetra(dni));
        }

        _propietarioDAO.insertar(propietario, conexion);



        if (propietario.getSaldo() < 0) {
            conexion.rollback();
            throw new SQLException();
        }

        conexion.close();
    }

    public ArrayList select(Propietario propietario, Connection conexion) throws ClassNotFoundException, SQLException {

        ConexionBD _conexionBD = new ConexionBD();
        PropietarioDAO _propietarioDAO = new PropietarioDAO();
        ArrayList list;

        conexion = _conexionBD.metodoConexion(propietario);
        list = _propietarioDAO.select(conexion);

        _propietarioDAO.select(conexion);

        conexion.close();


        return list;
    }

    public void delete(Propietario propietario, Connection conexion) throws ClassNotFoundException, SQLException {

        PropietarioDAO _propietarioDAO = new PropietarioDAO();

        ConexionBD _conexionBD = new ConexionBD();
        conexion = _conexionBD.metodoConexion(propietario);

        _propietarioDAO.delete(propietario, conexion);

        conexion.close();

    }

    public void actualizar(Propietario propietario, Connection conexion) throws ClassNotFoundException, SQLException {

        PropietarioDAO _propietarioDAO = new PropietarioDAO();

        ConexionBD _conexionBD = new ConexionBD();
        conexion = _conexionBD.metodoConexion(propietario);

        _propietarioDAO.actualizar(propietario, conexion);

        conexion.close();

    }

    public void tabla(Propietario propietario, Connection conexion) throws ClassNotFoundException, SQLException {

        PropietarioDAO _propietarioDAO = new PropietarioDAO();

        ConexionBD _conexionBD = new ConexionBD();
        conexion = _conexionBD.metodoConexion(propietario);

        _propietarioDAO.tabla(propietario, conexion);

        conexion.close();

    }
}
